<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.iamteer.Student"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 标签</title>
</head>
<body>
	<%--1 动作标签 --%>
	<%--
		1.1 转发标签 
		request.getRequestDispatcher("el.jsp");.forward(request, response);	
	--%>
	<%-- <jsp:forward page="/el.jsp"></jsp:forward> --%>
	<%--带参数
		request.getRequestDispatcher("el.jsp？name=eric");.forward(request, response);	
	--%>
	<%-- <jsp:forward page="el.jsp">
		<jsp:param value="jacky" name="name"/>
		<jsp:param value="111111" name="password"/>
	</jsp:forward> --%>
	
	<%--
		1.2 包含标签（动态包含）
		静态包含：<%@include file="page" %>	[不能传参]
		动态包含：<jsp:include page="page" ></jsp:include>[可以传参 ]
	--%>
	<%-- <jsp:include page="el.jsp"></jsp:include> --%>	
	
	
	JSTL标签（Java Standard Tag Libarary）<br/>
	1. 核心标签库（C 标签库）<br/>
	2. 国际化标签库（FMT 标签库）<br/>
	3. EL 函数库（FN 函数库<br/>
	4. XML 标签库（X 标签库）<br/>
	5. SQL 标签库<br/>
	
	使用步骤：<br/>
		1. 导入 JSTL 支持 jar 包<br/>
		2. 使用 taglib 指令导入标签库<br/>
		3. 在 jsp 中使用标签<br/>
		
		<%--set 标签：用于保存数据(默认保存保存到域里) --%>
		<c:set var="name" value="rose" scope="request"></c:set>
		${request.name }<br/>
		
		
		<!-- out 标签：获取数据（从域中）
		default:当 value 值为 null 时，使用默认值
		-->
		<%
			String msg = null;
			pageContext.setAttribute("msg", msg);
		%>
		<c:out value="${msg }" default="<h3>标题 3</h3>" escapeXml="true"></c:out>
		<br/>
		
		<%-- if 标签：单条件判断 --%>
		<c:if test="${10>5 }">
			条件成立<br/>
		</c:if>
			
		<%-- choose 标签 + when 标签 + otherwise 标签：多条件判断 --%>			
		<c:set var="score" value="68" scope="request"></c:set>
		<c:choose>
			<c:when test="${score >= 90  && score <= 100}">优秀</c:when>
			<c:when test="${score >= 80  && score < 90}">良好</c:when>
			<c:when test="${score >= 70  && score < 80}">中等</c:when>
			<c:when test="${score >= 60  && score < 70}">及格</c:when>
			<c:otherwise>不及格</c:otherwise>
		</c:choose>
		<br/>
		
		<%-- forEach 标签：循环
		begin=""	从哪个元素开始遍历，默认从 0 开始
		end=""		到哪个元素结束，默认到最后一个元素
		step=""		步长，默认是 1
		items=""	需要遍历的数据（集合）
		var=""		每个元素的名称
		varStatus=""当前正在遍历元素的状态对象（count 属性，当前位置，从 1 开始）
		 --%>
		<%
			List<Student> list = new ArrayList<Student>();
			list.add(new Student("rose", 18));
			list.add(new Student("chuck", 38));
			list.add(new Student("eric", 28));
			pageContext.setAttribute("list", list);
			
			Map<String, Student> map = new HashMap<String, Student>();
			map.put("001", new Student("chuck", 20));
			map.put("002", new Student("celia", 32));
			map.put("003", new Student("megan", 12));
			pageContext.setAttribute("map", map);
		%>
		<hr/>
		<c:forEach begin="0" end="2" step="1" items="${list }" var="student" varStatus="varSta">
			序号：${varSta.count } - 姓名：${student.name } - 年龄：${student.age }<br/>
		</c:forEach>
		<hr/>
		<c:forEach items="${map }" var="entry">
			${entry.key } - 姓名：${entry.value.name } - 年龄：${entry.value.age }<br/>
		</c:forEach>
		<hr/>
		
		<%-- forTokens 标签：循环特殊字符串 --%>
		<%
			String str = "java-php-net-平面";
			pageContext.setAttribute("str", str);
		%>
		<c:forTokens items="${str }" delims="-" var="s">
			${s }<br/>
		</c:forTokens>
		
		<%--redirect 标签：重定向 --%>
		<c:redirect url="http://blog.iamteer.com"></c:redirect>
</body>
</html>